package avicit.bdp.dgs.qa.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dgs.qa.dto.FCTemplateDTO;
import avicit.bdp.dgs.qa.dto.FCTemplateFieldDTO;
import avicit.bdp.dgs.qa.dto.FtdpFileDTO;
import avicit.bdp.dgs.qa.dto.QaDataSourceDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2023-07-18
 * @类说明：DataSourceDAO
 * @修改记录：
 * @注意事项：
 * @主要功能：数据源DAO
 */
@Repository
public interface QaDataSourceDAO extends BaseDAO<QaDataSourceDTO> {
    /**
     * 根据业务ID查询数据源列表
     *
     * @param businessId 业务ID，需要和JobManager.xml中JobMap保持一致，以便支持collection一对多关联查询
     * @return
     */
    List<QaDataSourceDTO> getDsListByCond(@Param("businessId") String businessId);

    /**
     * 删除/批量删除数据源配置
     *
     * @param businessId 业务ID
     * @param idList     告警ID列表
     * @return
     */
    int deleteDsByCond(@Param("businessId") String businessId, @Param("idList") List<String> idList);

    /**
     * 批量插入
     *
     * @param dsList
     * @return
     */
    int batchInsertDs(@Param("dsList") List<QaDataSourceDTO> dsList);

    /**
     * 查询指定时间段内校验表和校验字段信息
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<QaDataSourceDTO> getCheckTableList(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 根据试飞分类ID获取文件列表
     *
     * @param offsiteDataId 试飞分类ID
     * @param fileIdList    文件ID列表
     * @return
     */
    List<FtdpFileDTO> getFileList(@Param("offsiteDataId") String offsiteDataId, @Param("fileIdList") List<String> fileIdList);

    /**
     * 获取文件采集-文件模板，文件校验（试飞工程值）使用
     *
     * @return
     */
    List<FCTemplateDTO> getFileTemplateList();

    /**
     * 获取文件采集-文件模板-字段列表，文件校验（试飞工程值）使用
     *
     * @param templateId
     * @return
     */
    List<FCTemplateFieldDTO> getFieldList(@Param("templateId") String templateId);

    /**
     * 根据作业ID获取数据源类型
     *
     * @param jobId
     * @return
     */
    String getDbTypeByJobId(@Param("jobId") String jobId);
}

